// pages/foodDetail/foodDetail.js
import requestAPI from '../../utils/requestApi';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    foodDetail: {},
    id: null,
    isFavorite: false, // 初始为未收藏
    userLocation: {
      latitude: null,
      longitude: null,
    },  // 用户当前位置
    distance: null,
    defaultLocation: {
      latitude: 39.9042, // 默认纬度（以北京市中心为例）
      longitude: 116.4074, // 默认经度（以北京市中心为例）
      name: '默认位置',
      address: '北京市中心',
    },
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.setNavigationBarTitle({
      title: '详情',
    });
    wx.setNavigationBarColor({
      frontColor: 'black', 
      backgroundColor: '#fff', 
      animation: {
        duration: 500,
        timingFunc: 'easeOut',
      },
    });
    console.log('Received ID:', options.id);  // 调试：检查是否正确接收到ID
    if (options.id) {
      this.setData({
        id: options.id
      });
      this.getFoodDetail();
      this.getUserLocation();  // 获取用户当前位置
    } else {
      wx.showToast({
        title: '美食 ID 不存在',
        icon: 'none',
      });
    }
  },
  
  getFoodDetail() {
    // 获取用户的 userKey wx.getStorageSync 获取）
    // const userKey = wx.getStorageSync('userKey');
    // if (!userKey) {
    //   wx.showToast({
    //     title: '请先登录',
    //     icon: 'none',
    //   });
    //   return;
    // }

    const that = this;
    const relativeUrl = `/257070030`; // 替换为你的实际相对路径，并确保传递正确的参数
    console.log(relativeUrl);
    requestAPI.get(relativeUrl).then(data => {
        // 处理返回的数据
        const list = data
        // 更新villageList数据
        that.setData({
          foodDetail: list[0]
        });
        wx.hideLoading()
    }).catch(error => {
      console.error('请求乡村列表数据失败:', error);
    });

    // // 修改为后端提供的接口 URL 格式
    // const url = `http://106.225.204.10:8888/travel/foods/detail?userKey=${userKey}&id=${this.data.id}`;

    // console.log('Request URL:', url); // 调试：检查请求URL是否正确

    // wx.request({
    //   url: url,
    //   method: 'GET',
    //   header: {
    //     'Authorization':  userKey // 假设服务器端需要Bearer Token格式
    //   },
    //   success: (res) => {
    //     console.log('Response data:', res.data);  // 调试：打印接口返回的详情数据

    //     // 检查接口返回的结构，提取正确的 data 部分
    //     const foodData = res.data.data; // 提取 data 中的实际食物数据

    //     // 更新食物详情数据
    //     this.setData({
    //       foodDetail: foodData,  // 将 foodData 作为 foodDetail 传递给页面
    //       isFavorite: foodData.isFavorite || false, // 更新收藏状态
    //     });

    //     // 更新经纬度数据（如果接口返回了经纬度）
    //     const { latitude, longitude } = foodData;
    //     this.setData({
    //       'foodDetail.latitude': latitude,
    //       'foodDetail.longitude': longitude,
    //     });

    //     // 打印更新后的 foodDetail 数据
    //     console.log('Updated foodDetail:', this.data.foodDetail);  // 调试：查看更新后的 foodDetail 数据
    //      // 记录历史记录
    //     this.saveHistory(foodData);
    //   },   
    // });
  },
  
  // 获取历史记录
// getHistoryList(userKey) {
//     wx.request({
//       url: 'http://106.225.204.10:8888/travel/history/list', // 请求历史记录列表
//       method: 'GET',
//       data: { userKey: userKey, type: 'food' }, // userKey
//       success: (res) => {
//         if (res.data.code === 200) {
//           // 将后端获取的历史记录合并到本地历史记录
//           const serverHistory = res.data.data || [];
//           const historyKey = 'foodHistory';
//           const localHistory = wx.getStorageSync(historyKey) || [];
  
//           // 合并并去重
//           const mergedHistory = [...serverHistory, ...localHistory];
//           wx.setStorageSync(historyKey, mergedHistory); // 保存到本地存储
//         } else {
//           console.error('获取历史记录失败:', res.data.message);
//         }
//       },
//       fail: (error) => {
//         console.error('请求历史记录失败:', error);
//       }
//     });
//   },
  
  // 保存历史记录
// 保存历史记录
saveHistory(foodData) {
  const historyKey = 'foodHistory';
  let historyList = wx.getStorageSync(historyKey) || [];
  const existingIndex = historyList.findIndex(item => item.itemId === foodData.id);

  if (existingIndex > -1) {
    historyList.splice(existingIndex, 1); // 如果已存在，则移除
  }

  // 添加新记录到首位
  historyList.unshift({
    id: foodData.id, // 使用itemId作为id
    name: foodData.name,
    images: foodData.images || [], // 保存图片数组
    userKey: wx.getStorageSync('userKey'), // userKey
    type: 'food',
    itemId: foodData.id // 确保itemId被正确传递
  });

  // 限制历史记录数量，例如最多保存20条
  if (historyList.length > 20) {
    historyList.pop();
  }

  // 保存到本地存储
  wx.setStorageSync(historyKey, historyList);

  // 保存到服务器
  wx.request({
    url: 'http://106.225.204.10:8888/travel/history/add',  // 保存历史记录接口
    method: 'POST',
    data: {
      id: foodData.id, // 使用itemId作为id
      name: foodData.name,
      images: foodData.imageList[0],
      userKey: wx.getStorageSync('userKey'), // 获取用户的userKey
      type: 'food',
      itemId: foodData.id // 确保itemId被正确传递
    },
    success: (res) => {
      console.log(foodData);
      if (res.data.code === 200) {
        console.error('保存历史记录成功:', res.data.message);
      } else {
        console.error('保存历史记录失败:', res.data.message);
      }
    },
    fail: (error) => {
      console.error('请求保存历史记录失败:', error);
    }
  });
},
  
  getUserLocation() {
    wx.getLocation({
      type: 'wgs84',
      success: (res) => {
        // 设置用户的当前位置
        this.setData({
          userLocation: {
            latitude: res.latitude,
            longitude: res.longitude,
          }
        });
  
        // 如果美食详情页有经纬度，计算用户与美食之间的距离
        if (this.data.foodDetail.latitude && this.data.foodDetail.longitude) {
          this.calculateDistance(); // 获取到用户的位置后，计算距离
        }
      },
    });
  },
  

  viewLocation() {
    const { latitude, longitude, name, address } = this.data.foodDetail;

    if (latitude && longitude) {
      // 如果有经纬度，跳转到具体位置
      wx.openLocation({
        latitude: parseFloat(latitude),
        longitude: parseFloat(longitude),
        name: name || '未知地点',
        address: address || '无详细地址',
        scale:18,
      });
    } else {
      // 如果没有经纬度，跳转到默认位置
      wx.openLocation({
        latitude: 39.9042, // 默认北京市中心
        longitude: 116.4074,
        name: '默认位置',
        address: '北京市中心',
      });
    }
  },

  // 切换收藏状态
  toggleFavorite() {
    const userKey = wx.getStorageSync('userKey');
    if (!userKey) {
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 2000,
      });
      return;
    }

    // 反转收藏状态
    const newIsFavorite = !this.data.foodDetail.isFavorite;

    // 更新数据状态
    this.setData({
      'foodDetail.isFavorite': newIsFavorite,
      isFavorite: newIsFavorite,  // 同步页面的 isFavorite 状态
    });

    // 显示提示信息
    wx.showToast({
      title: newIsFavorite ? '收藏成功' : '取消收藏',
      icon: newIsFavorite ? 'success' : 'none',
      duration: 2000,
    });

    // 发送请求更新收藏状态
    const relativeUrl = newIsFavorite ? '/travel/favorite/add' : '/travel/favorite/remove';
    const data = {
      userKey: userKey,
      type: 'food',
      itemId: this.data.foodDetail.id,
    };
      // 没拿到 userKey
    console.log("========================");
    console.log(data);
    requestAPI.post(relativeUrl, data,{ openid: userKey }).then(res => {
      console.log(res);

      if (res.code === 200) {
        console.log('收藏状态更新成功');
         // 通知收藏页面刷新
         wx.setStorageSync('refreshFavorites', true); // 标记需要刷新收藏页面
      } else {
        console.error('收藏状态更新失败:', res.message);
        // 如果更新失败，恢复状态
        this.setData({
          'foodDetail.isFavorite': !newIsFavorite,
          isFavorite: !newIsFavorite,
        });
      }
    }).catch(error => {
      console.error('更新收藏状态失败:', error);
      // 如果请求失败，恢复状态
      this.setData({
        'foodDetail.isFavorite': !newIsFavorite,
        isFavorite: !newIsFavorite,
      });
    });
  },

  previewImage(e) {
    const current = e.currentTarget.dataset.src; // 当前点击的图片 URL
    wx.previewImage({
      current, // 当前显示图片的 http 链接
      urls: this.data.foodDetail.imageList, // 需要预览的图片数组
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {}
});
